// demo-logger.js
import { Logger } from './logger.js'; // 确保路径正确

async function runLoggerDemo() {
  // 实例化 Logger，带有一个前缀
  const myLogger = new Logger('[DEMO]');

  // 1. 展示不同级别的日志
  myLogger.blank(); // 空行
  myLogger.title('日志级别演示');
  myLogger.info('这是一条普通的信息日志。');
  myLogger.success('操作成功！数据已保存。');
  myLogger.warning('注意：配置项缺失，将使用默认值。');
  myLogger.error('发生了一个严重错误，请检查日志文件。');

  myLogger.blank();

  // 2. 展示 spinner 动画
  myLogger.title('Spinner 动画演示');
  myLogger.spinnerStart('正在执行耗时操作 A...');
  await new Promise((resolve) => setTimeout(resolve, 2000)); // 模拟异步操作
  myLogger.spinnerUpdate('正在执行耗时操作 B...');
  await new Promise((resolve) => setTimeout(resolve, 2000)); // 模拟异步操作
  myLogger.spinnerUpdate('正在执行耗时操作 C...');
  await new Promise((resolve) => setTimeout(resolve, 2000)); // 模拟异步操作
  myLogger.spinnerSucceed('耗时操作 A 完成！'); // 成功停止 spinner

  myLogger.spinnerStart('正在执行耗时操作 B...');
  await new Promise((resolve) => setTimeout(resolve, 1500)); // 模拟异步操作
  myLogger.spinnerFail('耗时操作 B 失败！'); // 失败停止 spinner

  myLogger.blank();

  // 3. 展示列表功能
  myLogger.title('列表功能演示');
  myLogger.info('以下是待办事项列表：');
  myLogger.list(['完成项目报告', '与团队开会', '审查代码', '部署新版本']);

  myLogger.blank();

  // 4. 另一个带不同前缀的 Logger 实例
  const anotherLogger = new Logger('[APP]');
  anotherLogger.info('这是另一个 Logger 实例发出的信息。');
  anotherLogger.success('所有演示已完成。');
}

// 运行演示函数
runLoggerDemo();
